package chapter01;

/**
 *
 * b 你的程序在最坏情况下的运行时间是多少（用N表示）
 */
public class Q20 {

    public static void main(String[] args) {
        long N = 11;
        long pow = (long)Math.pow(N, 0.5);
        System.out.println(pow);


        int fun = fun(0.5);
        System.out.println(fun);

    }

    /**
     * 大于0.5的概率
     * @param p
     * @return
     */
    public static int fun(double p) {
        //365 *... * (365-NUM) / 365*NUM

        double val = 1;
        int N = 1;
        while (val > p) {
            val = val * (365 - N + 1) / 365.0;
            N++;
        }
        return N;
    }
    /**
     * a 编写一个程序来确定正整数N是否是素数
     * 复杂度：log(N)
     * @param N
     * @return
     */
    public boolean isPrimeNumber(long N) {
        if (N <= 0 ) {
            return false;
        }
        long pow = (long)Math.pow(N, 0.5);
        boolean flag = false;
        for (int i = 0; i <= pow; i++) {
            if (N % i == 0) {
                return true;
            }
        }
        return false;
    }

    /**
     * c 令B等于N的二进制表示法中的位数。B的值是多少？
     * 复杂度：log(N)
     * @return
     */
    public long digitNum(long N) {
        if (N < 0) {
            N = -N;
        }
        int num = 0;
        while ( N/2 > 0 ) {
            num++;
            N/=2;
        }
        return num;
    }







}
